package com.example.crm.resources;

import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.mgt.DefaultSecurityManager;
import org.apache.shiro.realm.text.IniRealm;
import org.apache.shiro.subject.Subject;
import org.junit.jupiter.api.Test;


public class ShiroTester {
    @Test
    public void testShio(){
        //1、创建Realm(安全数据源)
        //通过shiro.init配置文件创建Realm
        IniRealm realm=new IniRealm("classpath:shiro.ini");
        //2、配置SecurityManager
        DefaultSecurityManager securityManager=new DefaultSecurityManager();

        //注入创建的Realm(安全数据源)
        securityManager.setRealm(realm);
        SecurityUtils.setSecurityManager(securityManager);
        //3、操作Subject.进行认证
        Subject subject= SecurityUtils.getSubject();
        //封装一个令牌
        UsernamePasswordToken token = new UsernamePasswordToken("admin","123456");
        try{
            subject.login(token);//登录即认证
        }
        catch (Exception e){
            System.out.println("认证异常:");
            e.printStackTrace();
        }
        System.out.println("是否认证通过:"+subject.isAuthenticated());
        System.out.println("身份信息:"+subject.getPrincipal());
    }
}
